package com.ccb.sc.common.modules.member.enums;

import com.baomidou.mybatisplus.annotation.IEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Getter;

import java.util.Objects;

/**
 * 勋章类型
 * @author ken
 * @since 2020-09-15
 */
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
@Getter
@ApiModel("勋章类型")
public enum MedalType implements IEnum<Integer> {

    /**
     * 订单转换次数：1 或 预约直播次数：1
     */
    YOU_NI_TONG_XING(1, "优你同行", "订单转换次数达到1次 或 预约直播次数达到1次", 1, 1),

    /**
     * 订单转换次数：3 或 预约直播次数：5
     */
    YOU_SHENG_YOU_SE(2, "优声优色", "订单转换次数达到3次 或 预约直播次数达到5次", 3, 5),

    /**
     * 订单转换次数：6 或 预约直播次数：10
     */
    YOU_FU_TONG_XIANG(3, "优福同享", "订单转换次数达到6次 或 预约直播次数达到10次", 6, 10),

    /**
     * 订单转换次数：9 或 预约直播次数：20
     */
    REN_JIAN_YOU_WU(4, "人间优物", "订单转换次数达到9次 或 预约直播次数达到20次", 9, 20),

    /**
     * 订单转换次数：12 或 预约直播次数：35
     */
    YOU_YOU_WO_XIN(5, "优优我心", "订单转换次数达到12次 或 预约直播次数达到35次", 12, 35),

    /**
     * 订单转换次数：15 或 预约直播次数：55
     */
    YOU_NI_XIANG_BAN(6, "优你相伴", "订单转换次数达到15次 或 预约直播次数达到55次", 15, 55),

    /**
     * 订单转换次数：19 或 预约直播次数：70
     */
    YOU_YOU_SUI_YUE(7, "优游岁月", "订单转换次数达到19次 或 预约直播次数达到70次", 19, 70),

    /**
     * 订单转换次数：23 或 预约直播次数：85
     */
    YOU_YOU_BU_PO(8, "优游不迫", "订单转换次数达到23次 或 预约直播次数达到85次", 23, 85),

    /**
     * 订单转换次数：27 或 预约直播次数：100
     */
    YOU_YOU_ZU_SUI(9, "优游卒岁", "订单转换次数达到27次 或 预约直播次数达到100次", 27, 100),

    /**
     * 订单转换次数：30 或 预约直播次数：115
     */
    YOU_ZAI_YOU_ZAI(10, "优哉游哉", "订单转换次数达到30次 或 预约直播次数达到115次", 30, 115),

    /**
     * 订单转换次数：35 或 预约直播次数：135
     */
    YOU_YOU_ZI_SHI(11, "优游自适", "订单转换次数达到35次 或 预约直播次数达到135次", 35, 135),

    /**
     * 订单转换次数：40 或 预约直播次数：150
     */
    YOU_YOU_TIAN_DAN(12, "优游恬淡", "订单转换次数达到40次 或 预约直播次数达到150次", 40, 150),

    ;

    private int value;
    private String name;
    private String desc;
    private int exchangeOrders;
    private int reserves;

    MedalType(int value, String name, String desc, int exchangeOrders, int reserves) {
        this.value = value;
        this.name = name;
        this.desc = desc;
        this.exchangeOrders = exchangeOrders;
        this.reserves = reserves;
    }

    public static MedalType getByValue(Integer value) {
        if (value == null) {
            return null;
        }
        for (MedalType medalType : MedalType.values()) {
            if (Objects.equals(medalType.getValue(), value)) {
                return medalType;
            }
        }
        return null;
    }

    @Override
    public Integer getValue() {
        return this.value;
    }
}
